/**
 * 用户相关API
 */
import { API_BASE_URL } from './config.js'

const API_URL = `${API_BASE_URL}/api`

/**
 * 获取用户信息
 * @param {number} userId - 用户ID
 * @returns {Promise<Object>} 用户信息
 */
export async function getUser(userId) {
  const response = await fetch(`${API_URL}/users/${userId}`)
  
  if (!response.ok) {
    const error = await response.json()
    throw new Error(error.detail || '获取用户信息失败')
  }
  
  return await response.json()
}

/**
 * 创建用户
 * @param {Object} userData - 用户数据
 * @param {string} userData.username - 用户名
 * @param {string} userData.email - 邮箱
 * @returns {Promise<Object>} 创建的用户信息
 */
export async function createUser(userData) {
  const response = await fetch(`${API_URL}/users`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(userData)
  })
  
  if (!response.ok) {
    const error = await response.json()
    throw new Error(error.detail || '创建用户失败')
  }
  
  return await response.json()
}

/**
 * 获取所有用户列表
 * @param {Object} params - 查询参数
 * @param {number} params.skip - 跳过的记录数
 * @param {number} params.limit - 返回的记录数
 * @returns {Promise<Array>} 用户列表
 */
export async function getUsers(params = {}) {
  const queryString = new URLSearchParams(params).toString()
  const url = `${API_URL}/users${queryString ? '?' + queryString : ''}`
  
  const response = await fetch(url)
  
  if (!response.ok) {
    const error = await response.json()
    throw new Error(error.detail || '获取用户列表失败')
  }
  
  return await response.json()
}

/**
 * 更新用户信息
 * @param {number} userId - 用户ID
 * @param {Object} userData - 更新的用户数据
 * @returns {Promise<Object>} 更新后的用户信息
 */
export async function updateUser(userId, userData) {
  const response = await fetch(`${API_URL}/users/${userId}`, {
    method: 'PUT',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify(userData)
  })
  
  if (!response.ok) {
    const error = await response.json()
    throw new Error(error.detail || '更新用户信息失败')
  }
  
  return await response.json()
}

/**
 * 删除用户
 * @param {number} userId - 用户ID
 * @returns {Promise<Object>} 删除结果
 */
export async function deleteUser(userId) {
  const response = await fetch(`${API_URL}/users/${userId}`, {
    method: 'DELETE'
  })
  
  if (!response.ok) {
    const error = await response.json()
    throw new Error(error.detail || '删除用户失败')
  }
  
  return await response.json()
}
